home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / COMMUNIC / TERMINAL / 1589.ZIP / WINSIZE.C < prev   
Text File  |  1989-02-28  |  4KB  |  147 lines

  1. #define SHRINKWINDOWS
  2. #include <stdio.h>
  3. #include <io.h>
  4. #include <fcntl.h>
  5. #include <windows.h>
  6. #include "icu_user.h"
  7.  
  8. /* */
  9. /*doc************************************************************************
  10. *
  11. *     NAME
  12. *
  13. *     SaveWindowSize() - save size of window in ascii file
  14. *
  15. *     FORMAT
  16. *
  17. *     SaveWindowSize(name,rect)
  18. *     char *name
  19. *     LPRECT rect
  20. *
  21. *     DESCRIPTION
  22. *
  23. *
  24. *     RETURN VALUE
  25. *     TRUE - error saving size
  26. *     FALSE - ok
  27. *
  28. *     REFERENCES
  29. *
  30. *end************************************************************************/
  31. SaveWindowSize( win_size )
  32. struct window_size *win_size;
  33. {
  34. /****************************************
  35. * local variable declarations           *
  36. ****************************************/
  37. int   hdl, size, ret, found;
  38. struct window_size temp;
  39. /****************************************
  40. * start of function code                *
  41. ****************************************/
  42. size = sizeof( struct window_size );
  43. /****************************************
  44. * open file                             *
  45. ****************************************/
  46. OPEN:
  47. hdl = open(SIZEFILE,O_BINARY|O_RDWR|O_CREAT,0666);
  48. if (hdl < 0)
  49.    return(TRUE);
  50.  
  51. /****************************************
  52. * read each line looking for one that   *
  53. *  matches the passed 'name'            *
  54. ****************************************/
  55. found = FALSE;
  56. ret = read( hdl,(char *) &temp, size );
  57. while (ret > 0) {
  58.    if (!strcmp( win_size->app_name, temp.app_name )) {
  59.        lseek( hdl,-(long)size, SEEK_CUR );
  60.        break;
  61.        }
  62.  
  63.    ret = read( hdl,(char *) &temp, size );
  64.    if ( ret > 0 && ret != size ) {       /* File is bad! ; recreate */
  65.        close( hdl );
  66.        unlink( SIZEFILE );
  67.        goto OPEN;
  68.        }
  69.    }
  70.  
  71. /****************************************
  72. * write the new coordinates             *
  73. ****************************************/
  74. ret = write( hdl, (char *) win_size, size );
  75. close(hdl);
  76.  
  77. if ( ret != size )
  78.    return(TRUE);
  79.  
  80. return(FALSE);
  81. }
  82. /* */
  83. /*doc************************************************************************
  84. *
  85. *     NAME
  86. *
  87. *     ReadWindowSize() - read size of window from file
  88. *
  89. *     FORMAT
  90. *
  91. *     ReadWindowSize(name,rect)
  92. *     char *name
  93. *     LPRECT rect
  94. *
  95. *     DESCRIPTION
  96. *
  97. *
  98. *     RETURN VALUE
  99. *     TRUE - error reading size or size not found
  100. *     FALSE - ok
  101. *
  102. *     REFERENCES
  103. *
  104. *end************************************************************************/
  105. ReadWindowSize( win_size )
  106. struct window_size *win_size;
  107. {
  108. /****************************************
  109. * local variable declarations           *
  110. ****************************************/
  111. int   hdl, size, ret;
  112. char  name[12];
  113. /****************************************
  114. * start of function code                *
  115. ****************************************/
  116. size = sizeof( struct window_size );
  117. strcpy( name, win_size->app_name );
  118. /****************************************
  119. * open file                             *
  120. ****************************************/
  121. hdl = open(SIZEFILE,O_BINARY|O_RDONLY);
  122. if (hdl < 0) {
  123.    return(TRUE);
  124.    }
  125. /****************************************
  126. * read each line looking for one that   *
  127. *  matches the passed 'name'            *
  128. ****************************************/
  129. ret = read( hdl,(char *) win_size, size );
  130. while (ret == size ) {
  131.    if (!strcmp( win_size->app_name, name )) {
  132.       close(hdl);
  133.       return(FALSE);
  134.       }
  135.    ret = read( hdl,(char *) win_size, size );
  136.    if ( ret > 0 && ret != size ) {       /* File is bad! ; recreate */
  137.        close( hdl );
  138.        unlink( SIZEFILE );
  139.        break;
  140.        }
  141.    }
  142.  
  143. close(hdl);
  144. memset( (char *) win_size, '\0', size );
  145. return(TRUE);
  146. }
  147.